package com.ceair.aiService;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.spring.AiService;

import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;

/**
 * @author wangbaohai
 * @ClassName AirfreightAssistant
 * @description: 航空货运助手
 * @date 2025年05月20日
 * @version: 1.0.0
 */
@AiService(wiringMode = EXPLICIT,
        chatModel = "qwenChatModel",
        chatMemoryProvider = "chatMemoryProvider",
        tools = "airfreightAssistantTools",
        contentRetriever = "pinconeContentRetriever")
public interface AirfreightAssistant {

    /**
     * 根据用户消息和记忆ID生成聊天响应
     * 此方法使用了系统消息注解，从指定资源文件中获取提示信息，以增强聊天的丰富性和互动性
     *
     * @param memoryId 用于标识用户记忆的ID，允许系统根据用户的历史行为进行个性化响应
     * @param message  用户输入的消息，是生成聊天响应的主要依据
     * @return 返回基于用户消息和记忆ID生成的聊天响应
     */
    @SystemMessage(fromResource = "airfreight-prompt.txt")
    String chat(@MemoryId int memoryId, @UserMessage String message);

}
